mongodb replSet 本地测试

1.首先新建目录replset用来存数据库文件,在replset下新建三个目录,db,db1,db2.

1
  mongod --port 270xx --dbpath=\replset\dbx\ --replSet replset(这里端口测试依次为27018,27019,27020)打开三个数据库服务,

登录其中一个mongo shell,输入

1
2
3
4
5
6
7
8
9
10
11
config = { _id:"replset"

  members:[

      {_id:0,host:"127.0.0.1:27018"}, 

      {_id:1,host:"127.0.0.1:27019"},

      {_id:2,host:"127.0.0.1:27020"}

      ]}

2.接着初始化配置

1
rs.initiate(config)

如果出现错误,code为93

解决方法:请注意是否_id值是否写错了,应该为 _id:”replset”

3. 查看副本集的情况

1
rs.status()


Problem:

在SECONDARY数据库输入读取命令出错,errmsg:not master,且不能写入数据,查资料可知

Reason:

首先这是正常的,因为SECONDARY是不允许读写的, 在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。

对于replica set 中的secondary 节点默认是不可读的

Try:

设置db.getMongo().setSlaveOk()即可正常读数据